package es2.ipleiria.pt.byinvitationonly;

import android.graphics.drawable.BitmapDrawable;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

import com.robotium.solo.Solo;

/**
 * Created by Gonçalo on 06-03-2015.
 */
public class MainActivityTestCase extends ActivityInstrumentationTestCase2 {

    private Solo solo;

    public MainActivityTestCase() {
        super(MainActivity.class);

    }

    public void setUp() throws Exception {
        super.setUp();
        solo = new Solo(getInstrumentation(), getActivity());
        solo.unlockScreen();
    }

    public void tearDown() throws Exception {
        solo.finishOpenedActivities();
        //teardown e a ultima linha
        super.tearDown();
    }

    /*Dado que estou na aplicação, Quando pressiono o botão "I'm here" e as
    informações do meu contacto estão preenchidas (pelo menos nome e email),
    Então deve ser-me exibida uma mensagem de confirmação da activação desta
    funcionalidade.*/
    public void testJanelaConfiguracao() throws Exception {
        abrirJanelaDeConfirmacao();
        boolean apareceu = solo.waitForText(getActivity().getString(R.string.confirmacao), 1, 5000);

        assertTrue("A mensagem de confirmacao nao apareceu", apareceu);

    }

    private void abrirJanelaDeConfirmacao() {
        solo.clickOnActionBarItem(R.id.action_i_am_here);
    }

    /*Dado que estou na mensagem de confirmação da funcionalidade "I'm here",
    Quando pressiono no botão "Sim" e tenho rede, Então os meus dados devem
    ser submetidos e partilhados com os restantes participantes que activaram a
    funcionalidade "I'm here" e o botão deve mudar para o estado activo.*/
    public void testConfirmarSubmissao() {
        abrirJanelaDeConfirmacao();
        solo.clickOnButton(getActivity().getString(R.string.sim));
        boolean mudouAtividade = solo.waitForActivity(WhoIsHereActivity.class, 5000);
        assertTrue("Não mudou para a atividade WhoIsHere", mudouAtividade);

        //garantir que o botao mudou imagem do fundo
        TextView tv = (TextView) solo.getCurrentActivity().findViewById(R.id.action_i_am_here);
        BitmapDrawable icon = (BitmapDrawable) tv.getCompoundDrawables()[0];
        BitmapDrawable esperado = (BitmapDrawable) solo.getCurrentActivity().getDrawable(R.drawable.ic_action_group);
        boolean iguais = esperado.getBitmap().sameAs(icon.getBitmap());
        assertTrue("Icon nao mudou para o esperado", iguais);
    }
}
